﻿#include "KincoServoManager.h"
#include "global.h"

#include <QJsonObject>
#include <QJsonDocument>
KincoServoManager::KincoServoManager(QWebSocket *cl,QObject *parent)
    : QObject(parent),pKincoSocket(cl)
{

}

QString KincoServoManager::GetSetParamsJson(int devicno, int32_t objctindex, int32_t value)
{
    // 构建 JSON 对象
    QJsonObject json;
    json.insert("CmdType", "SETPARAMS");
    json.insert("DeviceNo", devicno);
    json.insert("ObjectIndex", objctindex);
    json.insert("Value",value);
    // 构建 JSON 文档
    QJsonDocument document;
    document.setObject(json);
    return document.toJson(QJsonDocument::Compact);
}

QString KincoServoManager::GetSetControlJson(uint8_t deviceno, uint8_t value)
{
    // 构建 JSON 对象
    QJsonObject json;
    json.insert("CmdType", "CONTROL");
    json.insert("DeviceNo", deviceno);
    json.insert("ControlWord", value);
    // 构建 JSON 文档
    QJsonDocument document;
    document.setObject(json);
    mylog<<json;
    return document.toJson(QJsonDocument::Compact);
}

bool KincoServoManager::SetParams(int devicno, int32_t objctindex, int32_t value)
{
    QString data = GetSetParamsJson(devicno,objctindex,value);
    if(pKincoSocket){//mylog<<data;
        return pKincoSocket->sendTextMessage(data);
    }
    else{
        return false;
    }
}

bool KincoServoManager::SetControl(uint8_t deviceno, uint8_t value)
{
    QString data = GetSetControlJson(deviceno,value);
    if(pKincoSocket)
        return pKincoSocket->sendTextMessage(data);
    else
        return false;
}

bool KincoServoManager::SetProbe(uint8_t deviceno, uint8_t type)
{
    // 构建 JSON 对象
    QJsonObject json;
    json.insert("CmdType", "PROBE");
    json.insert("Type", type);
    json.insert("DeviceNo", deviceno);
    // 构建 JSON 文档
    QJsonDocument document;
    document.setObject(json);
    mylog<<json;
    QString data = document.toJson(QJsonDocument::Compact);
    if(pKincoSocket)
        return pKincoSocket->sendTextMessage(data);
    else
        return false;
}

bool KincoServoManager::SetMoveCmd(QString type, int value1, int value2,QString word)
{
    // 构建 JSON 对象
    QJsonObject json;
    json.insert("CmdType", "MOVECMD");
    json.insert("MoveType",type);
    json.insert("MoveWord",word);
    if(type == "MOVEXY")
    {
        json.insert("AxisX", value1);
        json.insert("AxisY", value2);
    }
    else if(type == "MOVEZ")
    {
        json.insert("AxisZ",value1);
    }
    else if(type == "MOVEROTATE")
    {
        json.insert("Angle",value1);
    }
    else if(type == "MOVECLAMP")
    {
        json.insert("Clamp",value1);
    }
    else if(type == "MOVERISE" || type == "MOVEFALL" || type == "MOVESTOP" || type == "MOVEZARB" || type == "MOVEZBRA")
    {

    }
    else
    {
        mylog<<json;
        return false;
    }

    // 构建 JSON 文档
    QJsonDocument document;
    document.setObject(json);
    mylog<<json;
    QString data = document.toJson(QJsonDocument::Compact);
    if(pKincoSocket)
        return pKincoSocket->sendTextMessage(data);
    else
        return false;
}

void KincoServoManager::setWebsocket(QWebSocket *& ptr)
{
    pKincoSocket = ptr;
}

